/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package compevol;

import java.util.Vector;

/**
 *
 * @author vitor
 */
public class CrossoverUmPonto implements Crossover {

    public Vector<Individuo> geraFilho(Individuo pai1, Individuo pai2) {
        Vector<Individuo> result = new Vector();

        Individuo filho1 = new Individuo(pai1.config);
        Individuo filho2 = new Individuo(pai1.config);

        //tem que ter esse for pq cada individuo tem N cromossomos (dependendo da funcao (f2 = 3, f4 = 10), por causa do x1,x2,x3,etc)
        for (int i = 0; i< pai1.cromossomos.size(); i++){
            Cromossomo cromPai1 = pai1.cromossomos.get(i);
            Cromossomo cromPai2 = pai2.cromossomos.get(i);
            Cromossomo cromFilho1 = filho1.cromossomos.get(i);
            Cromossomo cromFilho2 = filho2.cromossomos.get(i);

            int pontoDeCorte = (int)(Math.random()*cromPai1.genotipo.length);
            for (int j = 0; j < pontoDeCorte; j++){
                //filho1.cromossomos.get(i).genotipo[j] = pai1
                cromFilho1.genotipo[j] = cromPai1.genotipo[j];
                cromFilho2.genotipo[j] = cromPai2.genotipo[j];
            }
            //inverte
            for (int j = pontoDeCorte; j < cromPai1.genotipo.length; j++){
                cromFilho2.genotipo[j] = cromPai1.genotipo[j];
                cromFilho1.genotipo[j] = cromPai2.genotipo[j];
            }


            

        }
        //int pontoDeCorte = pai1.c

        result.add(filho1);
        result.add(filho2);

        /*result.add(pai1);
        result.add(pai2);*/
        return result;
    }
    
    @Override
    public String toString() {
        return "Um Ponto";
    }
}

